﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace Cemit.NetFramework.Demo.Tutorial3
{
    /// <summary>
    /// 本教程会创建一个角色，并创建房间内所有的角色（包括后续加入的角色）
    /// </summary>
    [System.Obsolete("已过时")]
    public sealed class NetworkManager : MonoBehaviour
    {
        //角色模型
        public PolyPlayer playerPrefabs;

        void Start()
        {
            //连接服务器
            PolyNetwork.OnConnectionSucceeded += OnConnected;
            PolyNetwork.Connect("127.0.0.1", 2333);
        }

        private void OnConnected()
        {
            PolyNetwork.OnCreatePlayer += OnCreatePlayer;

            //传入一个实现IPlayerData的对象，向服务器申请创建角色
            //该对象的所有公开字段将被同步到服务器中，并发送给所有玩家
            PolyNetwork.CreatePlayer(new PolyPlayerData
            {
                ID = $"御坂{Random.Range(10032, 20001)}号", //随机一个ID
                position = GetRandomPosition() //随机一个坐标
            });

            Vector3 GetRandomPosition()
                => new Vector3(Random.value * 5, 1, Random.value * 5);
        }

        //该方法监听了PolyNetwork.OnCreatePlayer
        //在创建角色后，服务器会发送房间内所有角色的信息（包括玩家自身和后续进入的角色）
        private void OnCreatePlayer(IPlayerData obj)
        {
            //实例化角色模型
            PolyPlayer player = Instantiate(playerPrefabs);
            player.playerData = (PolyPlayerData)obj;

            //设置标题名
            player.SetName(player.playerData.ID);

            //将坐标更新为服务器传入的坐标
            player.transform.position = player.playerData.position;

            Debug.Log($"角色：{player.playerData.ID}  位置：{player.playerData.position}");
        }
    }
}